package com.gzs.learn.payment.inf.enums;

import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

@Getter
public enum PaymentStatusEnum {
    /** 发起支付请求 */
    N("N", "新单-未支付"),

    /** 支付成功 */
    S("S", "支付成功"),

    /** 发起支付请求成功,待客户支付 */
    S0("S0", "支付中"),

    /** 请求第三方支付失败,请重试 */
    S1("S1", "支付失败"),

    /** 交易关闭,通常是超时未支付 */
    S2("S2", "交易关闭"),

    /** 退款成功 */
    R("R", "退款成功"),

    /** 已向第三方支付平台发起支付,等待第三方回调支付系统回调 */
    R0("R0", "退款中"),

    /** 部分退款 */
    R1("R1", "部分退"),

    /** 退款失败 */
    R2("R2", "退款失败"),

    ;

    private static final Map<String, PaymentStatusEnum> HOLDER_MAP = new HashMap<>();
    static {
        for (PaymentStatusEnum e : values()) {
            HOLDER_MAP.put(e.getCode(), e);
        }
    }

    private final String code;
    private final String desc;

    PaymentStatusEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public static PaymentStatusEnum convert(String code) {
        return HOLDER_MAP.get(code);
    }
}
